Skip to content

[3.14] gh-146333: Fix quadratic regex backtracking in configparser option parsing (GH-146399)#148287

Merged
gpshead merged 1 commit intopython:3.14from
miss-islington:backport-7e0a0be-3.14
Apr 12, 2026
Merged

[3.14] gh-146333: Fix quadratic regex backtracking in configparser option parsing (GH-146399)#148287
gpshead merged 1 commit intopython:3.14from
miss-islington:backport-7e0a0be-3.14

Conversation

@miss-islington
Copy link
Copy Markdown
Contributor

@miss-islington miss-islington commented Apr 9, 2026

Use negative lookahead in option regex to prevent backtracking, and to avoid changing logic outside the regexes (since people could use the regex directly).
(cherry picked from commit 7e0a0be)

Co-authored-by: Joshua Swanson 22283299+joshuaswanson@users.noreply.github.com

…ion parsing (pythonGH-146399)

Use negative lookahead in option regex to prevent backtracking, and to avoid changing logic outside the regexes (since people could use the regex directly).
(cherry picked from commit 7e0a0be)

Co-authored-by: Joshua Swanson <22283299+joshuaswanson@users.noreply.github.com>
@miss-islington miss-islington requested a review from jaraco as a code owner April 9, 2026 09:02
mandree added a commit to mandree/freebsd-ports that referenced this pull request Apr 11, 2026
Add a -flto=full option, which can speed up the port build
in terms of wallclock time at the expense of overall more
CPU time.

Issue a warning that test_ssl will fail from pre-test
if DEBUG is enabled.

Changelog:	https://docs.python.org/release/3.14.4/whatsnew/changelog.html

Which contains these security fixes:

pyexpat.c: Unbounded C recursion in conv_content_model causes crash
Security:	python/cpython#145986
which is the same as
Security:	CVE-2026-4224

Reject control characters in more places in http.cookies.Morsel
Security:	python/cpython#145599
which is the same as
Security:	CVE-2026-3644

SourcelessFileLoader does not use io.open_code()
Security:	python/cpython#145506
which is the same as
Security:	CVE-2026-2297

[security] Disallow usage of control characters in status, headers and
values for security in Lib/wsgiref/handlers.py
Security:	python/cpython#144370

Reject leading dashes in webbrowser.open()
Security:	python/cpython#143930
which is the same as
Security:	9fdad262-2e0f-11f1-88c7-00a098b42aeb
which is the same as
Security:	CVE-2026-4519

Excess Base64 data ignored after padding by default
Security:	python/cpython#145264
which is the same as
Security:	CVE-2026-3446

Added into PORTREVISION=1: 2 cherry-picks post-3.14.4
HTTP proxy via "CONNECT" tunneling doesn't sanitize CR/LF
Obtained from:	python/cpython#148342
Security:	python/cpython#146212
Security:	CVE-2026-1502

configparser.RawConfigParser.{OPTCRE,OPTCRE_NV} regexes vulnerable to
quadratic backtracking
Obtained from:	python/cpython#148287
Security:	python/cpython#146333

lang/python314: add FULLLTO and warning
mandree added a commit to mandree/freebsd-ports that referenced this pull request Apr 11, 2026
Add a -flto=full option, which can speed up the port build
in terms of wallclock time at the expense of overall more
CPU time.

Issue a warning that test_ssl will fail from pre-test
if DEBUG is enabled.

Changelog:	https://docs.python.org/release/3.14.4/whatsnew/changelog.html

Which contains these security fixes:

pyexpat.c: Unbounded C recursion in conv_content_model causes crash
Security:	python/cpython#145986
which is the same as
Security:	CVE-2026-4224

Reject control characters in more places in http.cookies.Morsel
Security:	python/cpython#145599
which is the same as
Security:	CVE-2026-3644

SourcelessFileLoader does not use io.open_code()
Security:	python/cpython#145506
which is the same as
Security:	CVE-2026-2297

[security] Disallow usage of control characters in status, headers and
values for security in Lib/wsgiref/handlers.py
Security:	python/cpython#144370

Reject leading dashes in webbrowser.open()
Security:	python/cpython#143930
which is the same as
Security:	9fdad262-2e0f-11f1-88c7-00a098b42aeb
which is the same as
Security:	CVE-2026-4519

Excess Base64 data ignored after padding by default
Security:	python/cpython#145264
which is the same as
Security:	CVE-2026-3446

Added into PORTREVISION=1: 2 cherry-picks post-3.14.4
HTTP proxy via "CONNECT" tunneling doesn't sanitize CR/LF
Obtained from:	python/cpython#148342
Security:	python/cpython#146212
Security:	CVE-2026-1502

configparser.RawConfigParser.{OPTCRE,OPTCRE_NV} regexes vulnerable to
quadratic backtracking
Obtained from:	python/cpython#148287
Security:	python/cpython#146333

lang/python314: add FULLLTO and warning

(cherry picked from commit b526f87)
@gpshead gpshead enabled auto-merge (squash) April 12, 2026 00:05
@gpshead gpshead merged commit af2f518 into python:3.14 Apr 12, 2026
57 checks passed
@miss-islington miss-islington deleted the backport-7e0a0be-3.14 branch April 12, 2026 00:05
freebsd-git pushed a commit to freebsd/freebsd-ports that referenced this pull request Apr 12, 2026
Add a -flto=full option, which can speed up the port build
in terms of wallclock time at the expense of overall more
CPU time.

Issue a warning that test_ssl will fail from pre-test
if DEBUG is enabled.

Changelog:	https://docs.python.org/release/3.14.4/whatsnew/changelog.html

PR:		294324

Which contains these security fixes:

pyexpat.c: Unbounded C recursion in conv_content_model causes crash
Security:	python/cpython#145986
		/ CVE-2026-4224

Reject control characters in more places in http.cookies.Morsel
Security:	python/cpython#145599
		/ CVE-2026-3644

SourcelessFileLoader does not use io.open_code()
Security:	python/cpython#145506
		/ CVE-2026-2297

Disallow usage of control characters in status, headers and
values for security in Lib/wsgiref/handlers.py
Security:	python/cpython#144370

Reject leading dashes in webbrowser.open()
Security:	python/cpython#143930
		/ 9fdad262-2e0f-11f1-88c7-00a098b42aeb
		/ CVE-2026-4519

Excess Base64 data ignored after padding by default
Security:	python/cpython#145264
		/ CVE-2026-3446

Additional security related PRs from upstream

HTTP proxy via "CONNECT" tunneling doesn't sanitize CR/LF
Obtained from:	python/cpython#148342
Security	python/cpython#146212
		/ CVE-2026-1502

configparser.RawConfigParser.{OPTCRE,OPTCRE_NV} regexes vulnerable to
quadratic backtracking
Obtained from:	python/cpython#148287
Security:	python/cpython#146333
freebsd-git pushed a commit to freebsd/freebsd-ports that referenced this pull request Apr 12, 2026
Add a -flto=full option, which can speed up the port build
in terms of wallclock time at the expense of overall more
CPU time.

Issue a warning that test_ssl will fail from pre-test
if DEBUG is enabled.

Changelog:	https://docs.python.org/release/3.14.4/whatsnew/changelog.html

PR:		294324

Which contains these security fixes:

pyexpat.c: Unbounded C recursion in conv_content_model causes crash
Security:	python/cpython#145986
		/ CVE-2026-4224

Reject control characters in more places in http.cookies.Morsel
Security:	python/cpython#145599
		/ CVE-2026-3644

SourcelessFileLoader does not use io.open_code()
Security:	python/cpython#145506
		/ CVE-2026-2297

Disallow usage of control characters in status, headers and
values for security in Lib/wsgiref/handlers.py
Security:	python/cpython#144370

Reject leading dashes in webbrowser.open()
Security:	python/cpython#143930
		/ 9fdad262-2e0f-11f1-88c7-00a098b42aeb
		/ CVE-2026-4519

Excess Base64 data ignored after padding by default
Security:	python/cpython#145264
		/ CVE-2026-3446

Additional security related PRs from upstream

HTTP proxy via "CONNECT" tunneling doesn't sanitize CR/LF
Obtained from:	python/cpython#148342
Security	python/cpython#146212
		/ CVE-2026-1502

configparser.RawConfigParser.{OPTCRE,OPTCRE_NV} regexes vulnerable to
quadratic backtracking
Obtained from:	python/cpython#148287
Security:	python/cpython#146333

(cherry picked from commit 955268b)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants